package controllers;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ValueChangeEvent;

import modelo.Localidad;
import modelo.Pais;
import modelo.Provincia;
import services.LocalidadService;
import services.PaisService;
import services.ProvinciaService;


@ManagedBean(name="localidadBean")
@ViewScoped
public class LocalidadBean implements Serializable {

	private static final long serialVersionUID = -7143514282792577123L;

	@ManagedProperty("#{paisService}")
	private PaisService servicePais;
	private Pais pais = new Pais();
	private List<Pais> listPaises = new ArrayList<Pais>();
	private Pais paisSelected = new Pais();
	
	@ManagedProperty("#{provinciaService}")
	private ProvinciaService serviceProvincia;
	private Provincia provincia = new Provincia();
	private List<Provincia> listProvincia = new ArrayList<Provincia>();
	private Provincia provinciaSelected = new Provincia();
	
	@ManagedProperty("#{localidadService}")
	private LocalidadService serviceLocalidad;
	private Localidad localidad = new Localidad();
	private List<Localidad> listLocalidad = new ArrayList<Localidad>();
	private Localidad localidadSelected = new Localidad();
	
	public LocalidadBean() {
		super();
	}
	
	@PostConstruct
	private void init(){
		listPaises=servicePais.getListaPais();
		listProvincia=serviceProvincia.getListaProvincia();
	}

	public PaisService getServicePais() {
		return servicePais;
	}

	public void setServicePais(PaisService servicePais) {
		this.servicePais = servicePais;
	}

	public Pais getPais() {
		return pais;
	}
	
	public void guardarLocalidad() {
		localidad.setProvincia(provinciaSelected);
		serviceLocalidad.guardarLocalidad(localidad);
		limpiarCampos();
		localidad = new Localidad();
	}
	
	public void cambiarComboProvincia(){
		listProvincia.removeAll(listProvincia);
		listProvincia=serviceProvincia.getListaProvincias(paisSelected);
	}
	
	public void limpiarCampos() {
		localidad.setNombreLocalidad(null);
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public List<Pais> getListPaises() {
		return listPaises;
	}

	public void setListPaises(List<Pais> listPaises) {
		this.listPaises = listPaises;
	}

	public Pais getPaisSelected() {
		return paisSelected;
	}

	public void setPaisSelected(Pais paisSelected) {
		this.paisSelected = paisSelected;
	}

	public ProvinciaService getServiceProvincia() {
		return serviceProvincia;
	}

	public void setServiceProvincia(ProvinciaService serviceProvincia) {
		this.serviceProvincia = serviceProvincia;
	}

	public Provincia getProvincia() {
		return provincia;
	}

	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

	public List<Provincia> getListProvincia() {
		return listProvincia;
	}

	public void setListProvincia(List<Provincia> listProvincia) {
		this.listProvincia = listProvincia;
	}

	public Provincia getProvinciaSelected() {
		return provinciaSelected;
	}

	public void setProvinciaSelected(Provincia provinciaSelected) {
		this.provinciaSelected = provinciaSelected;
	}

	public LocalidadService getServiceLocalidad() {
		return serviceLocalidad;
	}

	public void setServiceLocalidad(LocalidadService serviceLocalidad) {
		this.serviceLocalidad = serviceLocalidad;
	}

	public Localidad getLocalidad() {
		return localidad;
	}

	public void setLocalidad(Localidad localidad) {
		this.localidad = localidad;
	}

	public List<Localidad> getListLocalidad() {
		return listLocalidad;
	}

	public void setListLocalidad(List<Localidad> listLocalidad) {
		this.listLocalidad = listLocalidad;
	}

	public Localidad getLocalidadSelected() {
		return localidadSelected;
	}

	public void setLocalidadSelected(Localidad localidadSelected) {
		this.localidadSelected = localidadSelected;
	}
	
	
}
